
Redis چیست؟
"Redis در چند سال اخیر یکی از پرکاربردترین تکنولوژی ها بوده و با توجه به ویژگیهای خوبی که Redis ارائه میدهد در کنار سادگی و عملکرد بالایی که دارد به یک ابزار کار راهانداز برای کاربرد های مختلف تبدیل شده است."
Redis دقیقا چیست؟
در واقع Redis یک ذخیرهساز ساختارهای دادهای در RAM هست. یعنی چی؟
ساختارهای دادهای یا Data Structure میتوانند یک رشته ساده و یا یک لیستی از داده باشند که Redis آنها را در RAM نگهداری میکند و امکان دسترسی سریع به داده را فراهم میکند. از آنجایی که داده ها را ذخیره و بازیابی میکند یک نوع دیتابیس هست و چون این ذخیرهسازی در RAM اتفاق میافتد اصطلاحا in-memory Database نامیده میشود. دادهها در Redis به صورت key-value ذخیره میشوند و برای هر دادهای که در Redis ذخیره میشود یک key یا کلید داریم که زمان بازیابی با استفاده از این key به دادهی موردنظرمان که همان value هست میرسیم و بنابراین Redis یک key value database هست. پس Redis یک دیتابیس NoSql میباشد اما علاوه بر استفاده از Redis به عنوان دیتابیس با توجه به ویژگیهای آن که در ادامه مطلب با آنها آشنا میشویم، میتوانیم از Redis به عنوان Cache و Message Broker هم استفاده کنیم.
محبوبت
بر اساس آمار DB-Engines ranking که نظرات مشاوران آیتی و شرکت های این حوزه رو جمع آوری میکنه ، Redis به عنوان محبوبترین key-value database شناخته شده و همچنین رتبه 4 در بین دیتابیس های NoSQL رو در اختیار خودش قرار داده.
و بر اساس رتبه بندی سایت stackshare.io به عنوان بهترین دیتابیس NoSQL در سال 2015 شناخته شد.
دقیقا چه انواعی از داده را میشود در Redis ذخیره کرد؟
گفتیم که در Redis دو عنصر کلید و مقدار داریم. عنصر مقدار یا همان Value میتواند انواع مختلفی داشته باشد. اجازه دهید به برخی از این مقادیر و کاربردهای آنها نگاهی بیندازیم:
String: اگر مقداری از نوع String بود یک رشته ساده است که میتوانید عملیات درج/بههنگام سازی/حذف/دریافت را از آن کلید انجام دهید. مثلا با دستور زیر میتوانید یک کلید بسازید و یک رشته در آن درج کنید: SET server:name “Yottab” حال با کد زیر میتوانید مقدار مورد نظر برای کلید server:name را به دست آورید: GET server:name => “Yottab”
list: با استفاده از لیست میتوانید یک آرایه دلخواه داشته باشید. میتوانید در این آرایه عنصری را اضافه یا کم کنید و عملیات مختلف دیگر را انجام دهید.
sets: اگر مقدار موجود از نوع sets باشد در واقع یک لیست بدون ترتیب دارید که هیچ کدام از عناصر آن تکراری نیستند.
sorted sets: مانند همان مقدارهایی از نوع sets است با این تفاوت که هر عنصر از مجموعه دارای وزن است و این وزن میتواند به صورت مرتب نگهداری شود. (مثلا از وزن کم به زیاد)
hashes: در واقع این نوع داده یک مپ بین فیلدهای string و مقادیر string هست. اگر با انواع JSON آشنایی داشته باشید درک مقادیر hashes برای شما راحتتر است. این مقادیر میتوانند آبجکت هایی مانند JSON را در مقادیر خود داشته باشند
همچنین Redis میتواند مقادیر دیگری را نیز ذخیره و بازیابی کند. یکی از انواع آن ها، HyperLogLog است. فرض کنید میخواهید تعداد تکرار یک عنصر خاص از یک لیست را به دست آورید. اگر این لیست بسیار بزرگ باشد، این کار به راحتی انجام نمیپذیرد. مقادیر HyperLogLog میتواند با دقت بسیار بالا (اما نه ۱۰۰ درصد) تعداد تکرار یک عنصر خاص را حدس بزند. این کار با استفاده از الگوریتم های خاصی امکانپذیر است. انواع دیگری مانند ذخیره سازی عناصری از جنس موقعیتهای مکانی و یا Bitmapها نیز در Redis وجود دارند که کاربردهای خاص خود را دارند.
مزایای پایگاه داده Redis
اولین و مهمترین مزیت Redis رو میشه Open Source و رایگان بودن اونم دونست. دومین مزیت response time فوق العاده خوبی که نسبت به دیتابیس های SQL دارد و سومین مزیت بحث high avaibility هست که ردیس با پشتیبانی از Replication این موضوع رو به خوبی پوشش داده و شما میتونید چنیدن سرور رو با Replication کنید تا خیالتان از لحاظ دیتاهایتان راحت بشه. چهارمین مزیت بحث مقیاس پذیری هست که ردیس با پشتیبانی از کلاستر این بحث رو پوشش داده .
معایب پایگاه داده Redis
همونجور که در طول مقاله هم به این نکته اشاره کردیم ، Redis از نوع پایگاه داده هایی هست که دیتا رو روی Ram ها ذخیره میکنه که این عامل سرعت پاسخ دهی رو خیلی میبره بالا چون اساسا رم از هارد سرعت بیشتری داره. ولی خب دیتابیس Redis به Ram بالاتری هم نسبت به دیتابیس های SQL نیاز داره و چون Ram گرونتر از هارد هست در نتیجه یکی از معایب ردیس رو میشه بحث مالی عنوان کرد وگرنه از لحاظ فنی در حال حاضر نمیشه عیبی رو براش عنوان کرد.
Redis امکانات بسیار متنوع و خاصی دارد که در مواقع مختلف میتوان از آن ها استفاده کرد. اطلاعات بیشتر در وب سایت https://redis.io موجود است. این پایگاه داده می تواند توسط بسیار از زبان های برنامه نویسی مورد استفاده قرار بگیرد. لیستی از زبان هایی که Redis را پشتیبانی می کنند در اینجا آمده است.
ارسال دیدگاه